                          ============================
                           R E L E A S E    N O T E S
                          ============================

                      QLogic 5706 Multiple Boot Agent (MBA)
                               [ PXE,BOOTP,iSCSI Boot ]

                  Copyright (c) 2015 Broadcom Corporation
                              All rights reserved.


Revision History
================

Version 7.8.75 October 24,2013
------------------------------
    Enhancements:
    =============  
    1. Enhanced Base Code to display GUID in standard format. (CQ#71542)

Version 7.8.2 May 28, 2013
--------------------------
    Enhancements:
    =============
    1. Enhanced ROM initialization and loader code to support 32-bit BCV-based
       iSCSI option ROM.

    Fixes:
    ======
    1. Fixed a problem where UNDI driver would fail to load if the loader
       code is invoked from external software entities. (CQ#69324)

Version 7.8.1 January 16, 2013
------------------------------
    Enhancements:
    =============
    1. Minimized usage of UMB after Option ROM Initialization.
    2. Updated Copyright banner to reflect year of 2013. 

Version 7.8.0 October 17, 2012
------------------------------
    Enhancements:
    =============
    1. Enhanced so that it's not piggybacked with CCM binary.

Version 7.2.50 April 23, 2012
-----------------------------
    Fixes:
    ======
    1. Problem: System programmed with LOM image would hang while invoking CCM 
       by pressing Control+S during POST.

       Cause:   The driver didn't check CCM image type before invoking it.

       Fix:     Move the CCM type checking code to the code path that is common 
       to LOM and NIC images. 

    Enhancements:
    =============
    1. Embedded CCM v7.2.50.

Version 7.2.2 March 12, 2012
-----------------------------
    Fixes:
    ======
    1. Problem: CLP converts proposed DHCP Vendor ID value, and other
                various iSCSI Boot parameters, to lowercase.
 
       Change : Updated driver to preserve case sensitive CLP values where
                applicable.

    2. Problem: System hung up in CCM in some systems with very old BIOS.

       Cause :  This is a BIOS bug where it provides PMM buffer
       address in the BIOS stack area. This causes stack corruption.
  
       Change : Implemented a workaround for this BIOS problem so that
       MBA will use a fixed/safe memory region if memory buffer returned 
       by the BIOS is below 0x8000 (<32K region).

    Enhancements:
    =============
    1. Embedded CCM v7.2.13.

Version 7.2.1 February 3, 2012
-------------------------------
    Fixes:
    ======
    1. Problem: Wake On Lan parameter is available for 3rd and 4th ports
                of quad-port BCM5709 devices. (CQ#59273)
   
       Change : Updated logic to check Vaux register before making WoL 
                parameter available for configuration.

    Enhancements:
    =============
    1. Updated Copyright banner to reflect year of 2012. 
    2. Embedded CCM v7.2.8.

Version 7.2.0 December 14, 2011
-------------------------------
    Enhancements:
    =============
    1. Added support for stand-alone CCM module in the NVRAM.
    2. Embedded CCM v7.2.2.

Version 7.0.5 October 3, 2011
-----------------------------
    Enhancements:
    =============
    1. Embedded CCM v7.0.13.

Version 7.0.4 August 1, 2011
----------------------------
    Fixes:
    ======
    1. Problem: CCM displays unsupported link speed in MBA menu. (CQ#57113)

       Change: Updated CCM to hide unsupported link speeds for NX2 1G devices.

    Enhancements:
    =============
    1. Embedded CCM v7.0.5.

Version 7.0.3 June 29, 2011
----------------------------
    Enhancements:
    =============
    1. Embedded CCM v7.0.4.

Version 7.0.2 June 27, 2011
----------------------------
    Enhancements:
    =============
    1. Changed default MBA VLAN ID value to 1. (CQ#56075)

    2. Embedded CCM v7.0.3.

Version 7.0.1 June 15, 2011
----------------------------
    Fixes:
    ======
    1. Problem: System hung when iSCSI Boot ran on secondary interface on 
       a certain platform. (CQ#56198)

       Change: Updated iSCSI boot path to enable indirect access of secondary
       interface.

Version 7.0.0 June 10, 2011
----------------------------
    Enhancements:
    =============
    1. Reduced memory foot-print of UNDI driver by recompiling 
       code to optimize in size.

    2. Embedded CCM v7.0.1.

Version 6.4.3 March 7, 2011
---------------------------
    Fixes:
    ======
    1. Problem: When system has more than totally 16 Broadcom PCI devices,
       CCM will behave incorrectly. (CQ#53494, CQ#53498, CQ#53500)

       Cause: CCM only supports maximum up to 16 PCI devices so far,
       When system is install more than sixteen PCI devices, CCM did not
       handle the case correctly and caused memory corruption.

       Change: Increase maximum support PCI devices number from 16 to 32. 
       When system has more than 32 PCI devices, show warning message
       that only 32 PCI devices will be handled.

    Enhancements:
    =============
    1. Embedded CCM v6.4.13.

Version 6.4.2 February 25, 2011
-------------------------------
   Enhancements:
   =============
   1. Enhanced CLP logic to support MAC address query command. (CQ#52289)

   2. Embedded CCM v6.4.10.

Version 6.4.1 February 17, 2011
--------------------------------
   Fixes:
   ======
    1. Problem: PCI FW 3.0 Option ROM failed to initialize in systems with 
       PCI FW 3.x compliant BIOS.

       Cause: Initialization code failed to detect PCI FW level that BIOS 
       supports correctly.  This issue was introduced in MBA v6.4.0

       Change: Fixed PCI FW checking logic in the initialization code.

Version 6.4.0 February 16, 2011
--------------------------------
   Fixes:
   ======
    1. Problem: CCM might not be invoked correctly in some platform when
       low memory region is not cleared by the BIOS during POST.
       (CQ#52598) 

       Cause: BIOS doesn't clear low memory area (7c0:0) during POST.

       Change: Added a sofrware workaround to use the lower memory area only 
       when PMM Find API fails.

    2. Problem: Option ROM failed to relocate in a platform with PCI FW 3.1 
       compliant BIOS.

       Cause: Option ROM only relocated run-time code when it detected 
       PCI FW 3.0 BIOS.

       Change: Updated Option ROM to relocate code if BIOS is PCI FW 3.0 
       or newer.

   Enhancements:
   =============
    1. Embedded CCM v6.4.8.

Version 6.2.3 December 23, 2010
--------------------------------
   Enhancements:
   =============
   1. Updated copyright banner to reflect year of 2011. (CQ#51886)

   2. Embedded CCM v6.2.14.

Version 6.2.2 December 17, 2010
-------------------------------
   Fixes:
   ======
   1. Problem: LOM image with embedded CCM might hang on some platform when 
      Ctrl-S is invoked. (CQ#51571)
       
      Cause: BIOS on some platforms copies the Option ROM image to UMB based on 
      the image length in the PCI-R header instead of initializing length in the
      ROM header.

      Change: Fixed ROMHDR tool so that both initializing length and image length 
      are updated when CCM image is appended to the tail of the image.

   2. Fixed byte order of Ethernet class code in the ROM header.

   Enhancements:
   =============
   1. Embedded CCM v6.2.11.

Version 6.2.1 November 29, 2010
-------------------------------
   Fixes:
   ======
   1. Problem: In certain PCs, CCM failed to save configuration and
      corrupted configuration data. (CQ#51063)
       
      Cause: BIOS on these platforms has bug where PMM Find function
      doesn't work correctly.

      Change: CCM was changed to maintain mapping of handle and physical
      address of allocated blocks.

   Enhancements:
   =============
   1. Embedded CCM v6.2.7.

   2. Added BOFM support to CLP version of MBA image.

Version 6.2.0 October 18, 2010
------------------------------
   Enhancements:
   =============
   1. Enhanced PnP product string to have "BRCM" as prefix. (CQ#50114)
   2. Enhanced CCM to include CCM/MBA version in the "Device List" menu.
   3. Enhanced CCM to reduce memory footprint by 6Kbytes.
   4. Embedded CCM v6.2.1.

Version 6.0.11 September 24, 2010
--------------------------------
  Fixes:
  ======
   1. Problem : Fixed a problem where CCM doesn't get invoked if 
      MBA/CCM is part of the BIOS and there is no NIC with MBA/CCM
      found in the system. (CQ#50048)

      Cause : CCM version checking code determined CCM version 
      from the MBA in the NVRAM.  This logic would fail since 
      MBA/CCM is part of the BIOS.

      Change : Changed the CCM version checking logic to run CCM 
      of running image if there is no other CCM found in the system.

   Enhancements:
   =============
   1. Embedded CCM v6.0.8.

Version 6.0.10 August 20, 2010
------------------------------
   Enhancements:
   =============
   1. Embedded CCM v6.0.7.

   2. During POST, MBA will invoke latest version of CCM module from 
      all enabled Option ROMs in the system. If Ctrl-S is invoked
      for the Option that has old CCM module.  Option ROM now displays
      an information message to indicate that CCM will be invoked when 
      BIOS invokes the Option ROM with latest version of CCM.  

Version 6.0.9 August 13, 2010
------------------------------
   Enhancements:
   =============
   1. Embedded CCM v6.0.6.

Version 6.0.8 August 12, 2010
------------------------------
   Enhancements:
   =============
   1. Embedded CCM v6.0.3.

Version 6.0.7 July 28, 2010
---------------------------
   Enhancements:
   =============
   1. Embedded CCM v2.0.6.

Version 6.0.6 June 28, 2010
---------------------------
  Fixes:
  ======
   1. Problem : Some IBM platforms might hang after CCM exists. (CQ#48418)
 
      Change : Changed MBA code so that it doesn't allocate scrachpad buffer
      for decompression.  This will quanrantee that only PMM memory is used.

   Enhancements:
   =============
   1. Embedded CCM v2.0.3.

Version 6.0.5 June 11, 2010
---------------------------
  Fixes:
  ======
   1. Problem : CCM doesn't prompt users to save if "Boot To Target" is changed
      to One Time Enable Mode. (CQ#48258)

      Change : Changed CCM to prompt user to save parameters or not if "Boot To
      Target" parameter is changed.

   Enhancements:
   =============
   1. Embedded CCM v2.0.1.

Version 6.0.4 June 8, 2010
--------------------------
  Fixes:
  ======
   1. Problem : ROM header utility doesn't update ROM header for LOM images.
      (CQ#48199)

      Change : Fixed ROM header utility to update ROM header correctly.

   2. Problem : Boot Protocol is not saved correctly if it's configured to 
      "None". (CQ#47205)

      Change : Updated CCM to save Boot Protocol field correctly.

   Enhancements:
   =============
   1. Embedded CCM v2.0.0.

Version 6.0.3 May 13, 2010
--------------------------
  Fixes:
  ======
   1. Problem : Fixed a problem where CCM will not be invoked if one or more
      device with Option ROM disabled.

      Change : Fixed a problem in the CCM version check routine.

   2. Problem : MBA displays more than one banners when NICs are installed on   
      the OEM platforms. (CQ#47096)

      Cause: This is due a bug in the OEM platform BIOS where it doesn't
      support PMM Find API correctly.

      Change : Implemented workaround in the MBA init code to use different
      memory region to store CMM information.

   Enhancements:
   =============
   1. Embedded CCM v1.0.3.

Version 6.0.2 April 6, 2010
---------------------------
   Enhancements:
   =============
   1. Embedded Comprehensive Configuration Manager v1.0.1.  This is 
      an unified interface that allows users to configure MBA parameters,
      and iSCSI boot parameters.

   2. Enhanced Option ROM to display only single banner regardless
      how many devices are in the system.

  Fixes:
  ======
   1. Problem : Network booting will try indefinitely if the content of 
      NVRAM is blank.

     Change: Changed ROM init code to disable booting and remove itself
     from the memory if content of NVRAM is blank.

Version 6.0.1 March 12, 2010
----------------------------
  Fixes:
  ======
   1. Problem : MBA CLP code overwrites Virtual MAC addresses if they were
      configured with NCSI path.(CQ#46364)

      Cause : CLP code fetched the NVRAM configuration parameters from the 
      devices in the first CLP entry. This was not the current configuration
      if the MAC addresses had been configured with NCSI.

     Change: Changed the CLP code to fetch MAC address configuration from 
     the shared memory. 

   2. Problem : MBA legacy images are not built correctly.  They are PCI FW
      3.0 images. (CQ#46525)

      Change: Fixed makefile to build images correctly.

   3. Problem : TFTP/MTFP handshake might be slow in some configuration.
      (CQ#46215)
 
     Change: Reversed the enhancement that was put in the base code for 
     CQ#39447.

Version 6.0.0 January 5, 2010
-------------------------------
  Enhancements:
  =============
   1. Added compression and decompression support for UNDI, BC and iSCSI images.

Version 5.2.4 December 8, 2009
-------------------------------
  Fixes:
  =============
   1. Fixed system hang after pressing F4 to save under iSCSI boot.(CQ#44848)

Version 5.2.3 December 2, 2009
-------------------------------
  Enhancements:
  =============
   1. Added boot retry support.(CQ#43402)

Version 5.2.2 November 16, 2009
-------------------------------
  Fixes:
  ======
    1. Problem: System hangs if SMBIOS table is above 1M region.

       Change: Changed ROM Init routine to support searching SMBIOS
       about 1MB region.

  Enhancements:
  =============
   1. Enhanced BoFM logic to clear out VLAN field only if backup MAC address 
      is present and different from the primary MAC address when it responds
      to BOFM DEFAULT command.

Version 5.2.1 October 19, 2009
------------------------------
   1. Enhanced BoFM logic to clear out VLAN field only if backup MAC address 
      is present in response to BOFM DEFAULT command. (CQ#44176)

Version 5.2.0 October 13, 2009
------------------------------
   1. Enhanced BOFM code to treat ff:ff:ff:ff:ff:ff as an invalid MAC 
      address. (CQ#44033)

Version 5.0.6 July 31, 2009
---------------------------
  Fixes:
  ======
    1. Problem: Remote Windows Installation failed with WDS on BCM5709 A1
       devices.

       Cause :  During WDS installation, WDS software component scans
       the entire PCI configuration space of the device. There is a known 
       problem wth BCM5709 A1 devices that Tx/Rx mailbox requests are 
       dropped if mailbox registers at PCI configuration space are read.  
       This causes Tx and Rx to halt.

       Change: Updated UNDI driver to disable this checking feature for 
       BCM5709 devices.

Version 5.0.5 June 16, 2009
---------------------------
  Enhancements:
  =============
  1. Enhanced CLP code to support "One Time Disabled" option for iSCSI
     Boot To Target parameter via CLP protocol.

Version 5.0.4 June 15, 2009
---------------------------
  Enhancements:
  =============
   1. Enhanced iSCSI ROM logic to support "One Time Disable" Option for 
      iSCSI Boot To Target option.

Version 5.0.3 June 8, 2009
--------------------------
  Enhancements:
  =============
   1. Enhanced CLP logic to allow configuration of IPv6 iSCSI parameters.
   2. Enhanced MBA CLP Option ROM to delete Option ROM image if MBA is 
      disabled in the NIC application.

Version 5.0.2 May 14, 2009
--------------------------
  Fixes:
  ======
    1. Problem: iSCSI MPIO mode doesn't work.

       Cause : Incorrect FAR pointer to primary iSCSI block is not
       passed to routine that locates secondary iSCSI block.  This 
       issue was introduced in v5.0.1

       Change: Fixed UNDI loader code to pass correct FAR pointer 
       to primary ISCSI block.

Version 5.0.1 April 28, 2009
---------------------------
   Enhancements:
   =============
   1. Enhanced loader so that it can load iSCSI Boot driver IPv4 or IPv6 
      based on the iSCSI boot configuration.

Version 5.0.0 April 7, 2009
---------------------------
  Fixes:
   ======
    1. Problem: TFTP timeout during PXE boot is too long if TFTP server
       is not available. (CQ#39447)

       Cause : Timeout value is not reset for each TFTP open.  Subsequent
       TFTP open timeout will be the total timeout in the first TFTP open
       which can be 35s delay.

       Change: Fixed a problem in the Base Code to reset the timeout in 
       the beginning of TFTP open.

   Enhancements:
   =============
   1. Enhanced NVRAM locking routine to enable NVRAM arbitration request
      in each iteration.

Version 4.6.10 January 21, 2009
------------------------------
   Enhancements:
   =============
   1. Updated Copyright banner to reflect year of 2009. 

   Fixes:
   ======
   1. Problem: MBA ROM doesn't function correctly in the CLP path if the
      extended memory block returned by PMM were not initialized to 0's.
 
      Change : Changed code to initialize the CLP context block to 
      zero's after it's allocated with PMM.

Version 4.6.9 December 1, 2008
------------------------------
   Enhancements:
   =============
   1. Added support for BCM5716S.

Version 4.6.8 October 21, 2008
------------------------------
   Enhancements:
   =============
   1. Enhanced UNDI driver to avoid link drop in BCM5708/BCM5709 remote
      PHY configuration by using same serdes link preference as the boot
      code.

   2. Increased delay time from 3s to 5s after link-up so that it works 
      better with some switches that take long time to forward traffic
      after a link change.

Version 4.6.7 August 28, 2008
-----------------------------
   Fixes:
   ======
   1. Problem: BEV entry is not NULL in the PnP header after option ROM
      processes BOFM "DFLT" and "UPDT" commands.

      Change : Changed ROM init code to nullify BEV entry before returning
      to the BIOS.

   Enhancements:
   =============
   1. Enhanced to BOFM code to support VLAN configuration.

Version 4.6.6 August 21, 2008
-----------------------------
   1. Problem: "VlanMode" is masked out if "VlanID" CLP after.

      Change : Made changes to macro so that 16-bit compiler doesn't 
      generate code that masks out entire 32-bit number.

   2. Problem : VLAN mode no longer works with NCSI when driver is 
      loaded. (CQ#36501)

      Change : Changed Completion Processor firmware to pass VLAN ID 
      to management firmware running on MCP.

   3. Problem: MAC address is not reversed back to default when CLP
      default command is received. (CQ#36864)

      Change : Made changes to initialize MAC address in the shared
      memory and virtual MAC address space with permanent MAC
      addresses.

   4. Problem: iSCSI MAC address cannot not configured with the following
      CLP string:
          "set netport2 PermanentAddress=xxxxxxxxxxxx"
      (CQ#36962)

      Change : Made changes to support above CLP string.  User can still 
      configure iSCSI MAC address with "set netport1 iSCSIAddresss=xxxxxxxxxxxx"
      as before.

   Enhancements:
   =============
   1. Enhanced CLP logic so that CLP "BootEnable" works as follows:

     PXE boot control  : "set netport1 OEMXX_BootEnable=<Enabled | Disabled> 
     iSCSI boot control: "set netport2 OEMXX_BootEnable=<Enabled | Disabled> 

Version 4.6.5 July 25, 2008
---------------------------
   Enhancements:
   =============
   1. Enhanced to support BOFM "UPDT" and "DFLT" commands.

Version 4.6.4 July 23, 2008
---------------------------
   Enhancements:
   =============
   1. BOFM support is included along with PCI fw 3.0.

Version 4.6.3 July 23, 2008
---------------------------
   Enhancements:
   =============
   1. Enhanced CLP logic to save iSCSI and MBA parameters to NVRAM.

   Fixes:
   ======
   1. Problem: iSCSI parameters are not configured correctly with CLP commands
      on the OEM blades. (CQ#36157)

      Cause : Older version of BIOS reloads Option ROM for every CLP command.  
      This causes CLP command to lose Option ROM operating context.

      Change : Implemented workaround in the Option ROM  so that it saves 
      Option ROM operating context in the extended memory on CLP exit and
      restores back on CLP entry.

   2. Problem: MBA parameters of second port configured with second port
               on BCM5709 devices are not saved.

      Change : Changed CLP logic to save parameters for second port correctly.

   3. Problem: VLAN ID and Timeout parameters configured with CLP are not
               saved correctly.

      Change : Changed CLP logic to save these parameters correctly.

   4. Problem: iSCSI CHAP secret cannot be deleted by providing no
               string parameter.

      Change : Changed CLP front-end processing core logic to not to 
               block NULL-terminated strings. 

   5. Problem: CLP "BootEnable" logic is reverse.  When BootEnable is configured
               to "Enabled" (OEMXX_BootEnable=enabled"), the MBA Option ROM
               is disabled.

      Change : Changed CLP logic to fix this issue.

   6. Problem: Parameters configured on hot-key menu doesn't take effects
               if the same parameters were previously configured with CLP.

      Change : Changed initialization code to always fetch paramters from 
               the NVRAM.

   7. Problem: Relocating code might copy too much code to the UMB.

      Change : Fixed a problem in relocating code.

Version 4.6.2 July 14, 2008
--------------------------
   Enhancements:
   =============
   1. Enhanced MBA configuration menu so that "None" is added to MBA Boot 
      Protocol entry. When Boot Protocol is none, option ROM will be removed
      as a bootable device. (CQ#36335)

Version 4.6.1 July 14, 2008
---------------------------
   Enhancements:
   =============
   1. Enhanced CLP logic to return "Support Level" of 2 in AH register 
      as part of return code for BCM57711E devices.      

   2. Enhanced CLP logic to save iSCSI and MBA parameters to NVRAM.

   Fixes:
   ======
   1. Problem: iSCSI parameters are not configured correctly with CLP commands
      on the OEM blades. (CQ#36157)

      Cause : Older version of BIOS reloads Option ROM for every CLP command.  
      This causes CLP command to lose Option ROM operating context.

      Change : Implemented workaround in the Option ROM  so that it saves 
      Option ROM operating context in the extended memory on CLP exit and
      restores back on CLP entry.

   2. Problem: CLP doesn't work with BXPXE/BXUNDI ROM images.

      Cause : Run-time size was not allocated correctly.

      Change : Fixed size of run-time when EVPXE ROM images are built.

Version 4.6.0 May 28, 2008
--------------------------
   Enhancements:
   ============
    1. Added support for BCM5716C.

Version 4.4.4 May 23, 2008
--------------------------
   Fixes:
   ======
   1. Problem: Rx path might fail intermittently after initialization and 
      NCSI management firmware is enabled. (CQ#35070)

      Cause : There is a very small window that Rx MAC can be enabled 
      before Rx context is fully initialized. In that scenario, RV2P microcode
      code can fetch bogus physical address from the Rx context.

      Change : Changed UNDI driver code to enable RX MAC after Rx Context
      is fully initialized.

Version 4.4.3 April 8, 2008
---------------------------
   Fixes:
   ======
   1. Problem: MBA initialization uses/displays MAC address from the NVRAM.
      This can causes confusion in Virtual MAC address configuration.
      (CQ#34670)

      Cause : Init code queries MAC address from the NVRAM block.

      Change : Changed MBA Initialization code to query MAC address from the 
      shared memory.

   2. Problem: INT18h/19h Interrupt Vector is not setup correctly in PCI F/W 
      30 platform.

      Cause : INT18h/19h interrupt vector is not reconfigured after run-time 
      image is relocated to UMB.

      Change : Changed relocating code to reinitialize INT18h/INT19h interrupt
      with new run-time segment.  

   3. Problem: UNDI driver might get fatal error (divided by zero) if 
      the UNDI API sequence is not called in the correct order.

      Cause: During initialization, UNDI calibrates timers using on-chip 
      H/W timer. Invalid call sequence can cause this routine to fetch
      H/W timer incorrectly since indirect access is already disabled.  
      The elapsed time can be zero in this scenario.

      Change : Changed UNDI driver to use default loop count if the 
      elapsed time is zero.

   Enhancements:
   ============
    1. Enhanced CLP commands that that BIOS can configure virtual 
       MAC addresses.

Version 4.4.2 February 19, 2008
-------------------------------
   Fixes:
   ======
   1. Problem: PXE driver doesn't detect link intermittently when a certain
      switch module is used and remote phy is enabled.

      Cause: During UNDI driver initialization,  UNDI does the following:

       a. It polls up to 8 seconds to see if there is link. 
       b. If there is no link, then it will abort PXE boot.  
       c. If there is link, then it will continue to initialize.
       d. It then queries link again for link status and link speed so that
         it can setup the MAC correctly.  

      In this switch module configuration, it detects link after 90ms in step#a.
      So it terminates the 8s loop and continues initialization.  In step#d, 
      it polls for link status again and it found that link has gone down so
      it terminated the PXE boot.  In other words, there is a link bounce in 
      this setup.

      Change : Changed UNDI driver so that it will poll for another 8 seconds
      if it  link is detected previously in step#a.

Version 4.4.1 January 30, 2008
-------------------------------
   Fixes:
   ======
   1. Problem: LOM Images are not loaded correctly when it runs on
      systen with PCI F/W 3.0 BIOS.

      Cause: Run-time image was relocated too early before Vendor 
      flags were completely set.

      Change : Moved the relocating code after all Vendor flags 
      being set.

   Enhancements:
   ============
   1. Updated copyright banner to reflect year of 2008. 
   2. Enhanced ROM to fully comply with PCI F/W 3.0 specification.

Version 4.4.0 December 19, 2007
-------------------------------
   Enhancements:
   ============
   1. Enhanced option ROM to support PCI F/W 3.0.

Version 4.0.2 February 22, 2008
-------------------------------
   Enhancements:
   ============
   1. Updated copyright banner to reflect year of 2008. 

   Fixes:
   ======
   1. Problem: PXE driver doesn't detect link intermittently when a certain
      switch module is used and remote phy is enabled.

      Cause: During UNDI driver initialization,  UNDI does the following:

       a. It polls up to 8 seconds to see if there is link. 
       b. If there is no link, then it will abort PXE boot.  
       c. If there is link, then it will continue to initialize.
       d. It then queries link again for link status and link speed so that
         it can setup the MAC correctly.  

      In this switch module configuration, it detects link after 90ms in step#a.
      So it terminates the 8s loop and continues initialization.  In step#d, 
      it polls for link status again and it found that link has gone down so
      it terminated the PXE boot.  In other words, there is a link bounce in 
      this setup.

      Change : Changed UNDI driver so that it will poll for another 8 seconds
      if it  link is detected previously in step#a.

Version 4.0.1 December 7, 2007
------------------------------
   Fixes:
   ======
   1. Problem: UNDI driver fails to connect at 2.5Gbps with BCM5708S. (CQ#32943)

      Cause: Energy link detection prematurely declared no media detect.

      Change : Changed UNDI driver to make sure energy detection is present
      before polling for link status.

Version 4.0.0 December 6, 2007
-----------------------------
   Fixes:
   ======
   1. Problem: UNDI driver fails to connect at 2.5Gbps with BCM5708S. (CQ#32943)

      Cause: Bit 15 of AUTONEG register was set by the bootcode and this bit 
      needs to be cleared for 2.5Gps mode.

      Change : Changed UNDI driver to reset bit 15 if it's set and restart
      AUTONEG.

   2. Problem : BCM5709 devices doesn't establish link with a certain link 
      partners with BCM5709 B0 and B1.

      Change:  Changed UNDI driver to turn off Early DAC Wakeup feature
      on the for BCM 5709 B0 and B1.

Version 3.7.5 February 19, 2008
-------------------------------
   Enhancements:
   ============
   1. Updated copyright banner to reflect year of 2008. 

   Fixes:
   ======
   1. Problem: PXE driver doesn't detect link intermittently when a certain
      switch module is used and remote phy is enabled.

      Cause: During UNDI driver initialization,  UNDI does the following:

       a. It polls up to 8 seconds to see if there is link. 
       b. If there is no link, then it will abort PXE boot.  
       c. If there is link, then it will continue to initialize.
       d. It then queries link again for link status and link speed so that
         it can setup the MAC correctly.  

      In this switch module configuration, it detects link after 90ms in step#a.
      So it terminates the 8s loop and continues initialization.  In step#d, 
      it polls for link status again and it found that link has gone down so
      it terminated the PXE boot.  In other words, there is a link bounce in 
      this setup.

      Change : Changed UNDI driver so that it will poll for another 8 seconds
      if it  link is detected previously in step#a.

Version 3.7.4 October 1, 2007
-----------------------------
   Fixes:
   ======
   1. Problem: PXE driver doesn't detect link when switch module is used
      and remote phy is enabled. (CQ#31625)

      Cause: UNDI driver sets NETLINK_DRV_SET_LINK_PHY_APP_REMOTE bit 
      unconditionally

      Change : Changed UNDI driver to set NETLINK_DRV_SET_LINK_PHY_APP_REMOTE
      bit only if it's a remote phy application.

Version 3.7.3 September 26, 2007
-------------------------------
   Fixes:
   ======
   1. Problem: Selecting CTRL-F6(Blink LEDs) multiple times in succession will
      cause system freeze. CQ#31444

      Cause: Keyboard buffer status did not match INT16h return status.

      Change : Changed UNDI driver to call INT16h to remove keystrokes
      from the keyboard buffer.

   
Version 3.7.2 September 20, 2007
-------------------------------
   Fixes:
   ======
   1. Problem : BCM5709 devices doesn't establish link with a certain link 
      partners with BCM5709.

      Change:  Changed UNDI driver to turn off Early DAC Wakeup feature
      on the PHY core.

Version 3.7.1 August 30, 2007
------------------------------
   Enhancements:
   ============
   1. Extended UNDI API so that upper layers can update iSCSI block on the 
      secondary NIC.     

Version 3.7.0 August 28, 2007
-----------------------------
   Fixes:
   ======
   1. Problem : UNDI driver doesn't extract correct MAC address and VLAN ID
      of second port of BCM5709 device for iSCSI Boot MPIO configuration. 

      Change:  Changed UNDI driver to use correct NVRAM offset for func#1
      of BCM5709 device.

   Enhancements:
   ============
   1. Enhanced ROM initialization code to display MAC address of the device
      during POST. (CQ#28544)

Version 3.5.16 February 19, 2008
--------------------------------
   Enhancements:
   ============
   1. Updated copyright banner to reflect year of 2008. 

   Fixes:
   ======
   1. Problem: PXE driver doesn't detect link intermittently when a certain
      switch module is used and remote phy is enabled.

      Cause: During UNDI driver initialization,  UNDI does the following:

       a. It polls up to 8 seconds to see if there is link. 
       b. If there is no link, then it will abort PXE boot.  
       c. If there is link, then it will continue to initialize.
       d. It then queries link again for link status and link speed so that
         it can setup the MAC correctly.  

      In this switch module configuration, it detects link after 90ms in step#a.
      So it terminates the 8s loop and continues initialization.  In step#d, 
      it polls for link status again and it found that link has gone down so
      it terminated the PXE boot.  In other words, there is a link bounce in 
      this setup.

      Change : Changed UNDI driver so that it will poll for another 8 seconds
      if it  link is detected previously in step#a.

Version 3.5.15 October 1, 2007
-----------------------------
   Fixes:
   ======
   1. Problem: PXE driver doesn't detect link when switch module is used
      and remote phy is enabled. (CQ#31625)

      Cause: UNDI driver sets NETLINK_DRV_SET_LINK_PHY_APP_REMOTE bit 
      unconditionally.

      Change : Changed UNDI driver to set NETLINK_DRV_SET_LINK_PHY_APP_REMOTE
      bit only if it's a remote phy application.

Version 3.5.14 August 23, 2007
------------------------------
   Fixes:
   ======
   1. Problem : UNDI might not able to detect link intermittently in a remote 
      PHY configuration. (CQ#31095)

      Change:  Changed UNDI driver to not use energy detect and cable sense
      posted by boot code since the status is not very reliable.

Version 3.5.13 July 27, 2007
---------------------------
   Fixes:
   ======
   1. Problem : MBA might not detect secondary device correctly if the most 
      significant 4 octet of secondary device's MAC address is the same as 
      other device. (CQ#30585 & CQ#30807)

      Change : Changed MBA code to do DWORD (instead of WORD) compare for 
      the LSB 4-byte of the MAC when searching for secondary device.

   2. Problem : MBA does not detect link when line speed is forced with
      Remote PHY enabled. (CQ #30802)

      Cause : Firmware did not up date link status in shared memory when MBA
      first query for link after issue Set Link command.
      
      Change : To clear previous link status in shared memory before issue
      Set Link command.

Version 3.5.12 July 9, 2007
---------------------------
   Fixes:
   ======
   1. Problem : Changing VLAN ID field in the MBA configuration menu doesn't
      take effect immediately in the iSCSI Boot scenario.

      Cause : Updated VLAN ID parameter is not passed to iSCSI Boot agent.
      
      Change : Changed MBA configuration saving routine to update 
      VLAN parameter that is passed to iSCSI Boot agent.

Version 3.5.11 July 2, 2007
---------------------------
   Enhancements:
   ============
   1. Enhanced UNDI driver to provide an API interface so that upper
      layer can update iSCSI information on the secondary interface.

Version 3.5.10 June 28, 2007
---------------------------
   Fixes:
   ======
   1. Problem : iSCSI Boot tried to boot on non-configured secondary
      device of second set of MPIO if the first set of MPIO was
      configured and failed to boot. (CQ#30280)

      Cause : The low memory was used for scratchpad memory block.
      This block was not cleared first.
      
      Change : Changed iSCSI loading logic to clear out the scrachpad
      block.

Version 3.5.9 June 26, 2007
---------------------------
   Fixes:
   ======
   1. Problem : VLAN ID of secondary NIC was not passed correctly 
      in iSCSI block. (CQ#30213)

      Cause : VLAN ID field was not converted to little endian 
      before passing down to the iSCSI driver.
      
      Change : Changed the initializing code to convert VLAN
      information to correct format before passing down to 
      the iSCSI driver.

   Enhancements:
   ============
   1. Updated readme.txt to describe bxumba.nic image. (CQ#30118)

Version 3.5.8 June 22, 2007
---------------------------
   1. Problem : IPMI doesn't work when PXE driver is loaded.

      Cause : RXP firmware doesn't pass required parameters to IPMI
      firmmware running on MCP.
      
      Change : Fixed RXP firmware to pass required parameters to 
      MCP processor.

Version 3.5.7 June 19, 2007
---------------------------
   1. Problem : VLAN ID of secondary interface is not passed to iSCSI boot  
      agent correctly when VLAN of secondary interface is not enabled.
      (CQ#30083)

      Cause :  When VLAN of secondary interface is disabled, MBA code 
      doesn't initialize the VLAN ID field in the interface block.
      
      Change : Changed the MBA code to initialize VLAN ID field to zero
      if VLAN admin state of secondary interface is disabled.

Version 3.5.6 June 11, 2007
---------------------------
   Enhancements:
   ============
   1. Added logic to pass iSCSI boot configuration parameters of primary and 
   secondary devices to iSCSI boot agent.

Version 3.5.5 May 31, 2007
--------------------------
   Enhancements:
   ============
   1. Added support for BCM5709 A1 Serdes devices.

Version 3.5.4 May 29, 2007
--------------------------
   Enhancements:
   ============
   1. Added support for BCM5709 A1 devices.

Version 3.5.3 May 10, 2007
--------------------------
   Enhancements:
   -------------
   1. Enhanced MBA configuration to allow user to configure link speed 
      of Remote PHY port as copper port.

Version 3.5.2 April 24, 2007
----------------------------
   1. Problem : iSCSI boot is slow when the link is configured to 10FD.
      (CQ#29261)

      Cause :  Changes for BCM5709 support introduced a bug where the UNDI
      driver always runs in AUTONEG mode. Since the link partner is forced to 
      10FD, the link is resolved to 10HD.  The mismatch in speed results in 
      extremely slow performance.  
      
      Change : Fixed so that link speed is configured based on the MBA link
      speed.

Version 3.5.1 April 24, 2007
----------------------------
    Fixes:
    ======      
    1. Problem : BCM5706/08 failed to connect with PXE or iSCSI Boot in the 
       ServerWorks HTLE system. (CQ#29186)

       Cause : BIOS in this system doesn't enable BUS Master in the PCI command 
       register.

       Change: Changed the UNDI initialization so that it enables Bus Master.

Version 3.5.0 April 23, 2007
----------------------------
   Enhancements:
   -------------
   1. Added remote PHY support.

Version 3.4.4 January 31, 2007
------------------------------
    Fixes:
    ======      
    1. Problem : RPL doesn't timeout correctly if RPL server is not found 
       for BCM5709 devices. (CQ#28262)

       Cause : Timeout logic doesn't work correctly if the device fails to 
       transmit.

       Change: Changed the timeout logic to work correctly.

    2. Problem : Configured protocol in MBA configuration screen doesn't take 
       effect immediately for BCM5709 devices. (CQ#28264)

       Cause : Bootcode doesn't copy the parameters from the NVRAM to the 
       shared memory after GRC reset.

       Change: Changed the logic in the UNDI driver to extract shared  memory
       parameters after bootcode synchronization. 

    3. Problem : RPL failed to connect to server. (CQ#28263)

       Cause : There is a grace condition that RPL's interrupt service routine
       can change the content of the indirect base register.  This can cause
       foreground driver to access the device registers incorrectly. 

       Change: Changed the RPL's ISR to preserve content of the indirect base 
       register. 

Version 3.4.3 January 25, 2007
-----------------------------
    Fixes:
    ======      
    1. Problem : Valid range for VLAN ID in MBA configuration menu is 
       too small (0..1023). (CQ#28249)

       Change: Changed MBA configuration code to increase valid VLAN 
       range to (0..4095).

Version 3.4.2 January 9, 2007
-----------------------------
   Fixes:
   ======
   1. Problem : iSCSI boot is slow when the link is configured to 10FD.
      (CQ#28083)

      Cause :  UNDI driver was implemented with selective AUTONEG.  When 
      the port is configured to 10FD, it advertises to the link partner
      that it supports 10FD.  Since the link partner is forced to 10FD,
      the link is resolved to 10HD.  The mismatch in speed results in 
      extremely slow performance.  
      
      Change : Changed the UNDI driver not to use selective AUTONEG
      implementation.  This behavior is consistent with the legacy 
      UNDI driver.

Version 3.4.1 January 4, 2007
-------------------------------
   Enhancements:
   ============
   1. Problem : There is a link drop during a network boot with 
      BCM5709 devices.

      Cause :  There was a bug in the boot code where it doesn't 
      reset the PHY correctly.  UNDI driver was implemented with a 
      software workaround which issues a PHY reset during 
      initialization.

      Change : Removed software workaround (PHY reset) since updated
      bootcode already has the fix.

   2. Updated copyright banner to reflect year of 2007. 

Version 3.4.0 December 27, 2006
-------------------------------
   Enhancements:
   ============
   1. Added support for BCM5709 family devices (0x14e4/0x1639, 
      0x14e4/0x163a).

Version 3.0.5 November 9, 2006
------------------------------
   Fixes:
   ======
   1. Problem : System hangs when parameters are saved in the MBA 
      configuration when no timeout (no banner) is configured in 
      some OEM platforms. (CQ#25914)

      Cause :  BIOS has CPU interrupt disabled which prevents system 
      timer to run when it invokes option ROM.  In BIOS/DOS environment, 
      it's mandatory that system increments BDA location 40:6C 18 times per 
      second.  Option ROM uses BDA 40:6C for timing delay task.  The BDA 
      40:6C is not incremented which causes option ROM to poll forever.

      Change : Software workaround was implemented where a timing delay 
      routine is changed so that it enables interrupt which allows 
      system timer to run.  The delaying routine then restores interrupt 
      state before exit.

Version 3.0.4 November 6, 2006
------------------------------
   Enhancements:
   =============
   1. Enhanced MBA menu-driven configuration code so that it prompts user
      to save changes if user presses ESC to exit when one or more changes
      were made. (CQ#26965)

Version 3.0.3 October 9, 2006
------------------------------
   Fixes:
   ======
   1. Problem : UNDI driver will display bogus data on the Boot Protocol 
      Entry if it was configured to iSCSI Boot and image was configured 
      so that boot protocol is not configurable.  This problem only occurs
      with UNDI images.

      Change : Fixed the mapping logic so that mapping index is correct
      for UNDI images.

Version 3.0.2 October 6, 2006
-----------------------------
   Enhancements:
   =============
   1. Enhanced to display MAC address of the device being configured 
      in the MBA configuration menu. (CQ#27029)

Version 3.0.1 October 5, 2006
-----------------------------
   Enhancements:
   =============
   1. Updated MBA configuration menu code to lock MBA boot protocol 
      configuration to the protocol if BIOS ever requests with the
      following interface:

        ECX   : 0x50524F54 ("PROT") for boot protocol selection
        SI    : bit 2..0 = 000b - PXE 
                           001b - RPL 
                           010b - BOOTP
                           011b - iSCSI
                           others - Reserved

Version 3.0.0 September 28, 2006
--------------------------------
   Enhancements:
   =============
   1. Enhanced ROM header utility (romhdr.exe) to allow user to configure 
      Boot Protocol option to be not configurable. Version of this utility 
      is v1.0.7.

      For instance,

      To disable MBA boot protocol configuration

               romhdr -v 0x14e4 -d 0x164a -c 1 -i bxundi.lom -o rom.lom

      To enable MBA boot protocol configuration

               romhdr -v 0x14e4 -d 0x164a -c 0 -i bxundi.lom -o rom.lom


   2. Updated MBA configuration menu code to lock MBA boot protocol 
      configuration if it's enabled in the image.

Version 2.8.5 July 18, 2006
---------------------------
   Fixes:
   ======
   1. Problem : IBM x346 fails to boot to a secondary PXE
      (CQ#25936)

      Cause : BEV entry vector/INT18/INT19 routine corrupts 
      register bx. IBM BIOS is not supposed to look at the
      contents of BX.  

      Change : Changed entry routine to preserve register BX.

     Impact : None

Version 2.8.4 July 11, 2006
--------------------------
   Fixes:
   ======
   1. Problem : Some OEM systems hang when iSCSI boot is requested. 
      (CQ#25799)

      Cause : During POST, BIOS invokes MBA initialization entry point
      (@start+3).  MBA initializes hardware and performs other 
      initializations before returns back to BIOS. BIOS then calls 
      BEV entry to request a network boot.  In these platfroms, BIOS 
      apparently performs device resets before invoking BEV entry. 
      Since the device is reset, BEV routine code fails to access 
      device registers in indirect access mode.  This causes BEV
      fails to load iSCSI code correctly from the NVRAM.

      Change : Changed the BEV code to enable indirect access
      mechanism.

     Impact : None

Version 2.8.3 June 12, 2006
---------------------------
   Fixes:
   ======
   1. Problem : UNDI driver might not detect presence of link on 
      BCM5706S correctly.

      Change : Changed the link detection logic to use link status 
      from the PHY as one of the qualifiers.

Version 2.8.2 June 9, 2006
--------------------------
   Fixes:
   ======
   1. Problem : UNDI driver might not detect link correctly on BCM5706s
      when bootcode v1.40 or newer is used. The problem occurs more frequent
      when it interoperates with Marvell link partner.  This particular
      Marvell serdes might take up to 3 or more seconds to AUTONEG
      after a valid link is present.

      Cause : The bootcode and the UNDI driver are accessing the PHY
      chip at the same time. The collision occurs because the driver 
      is initializing the PHY before a core reset when the bootcode 
      is running in driver absent mode.
      
      Change : Changed the UNDI driver so that PHY initialization 
      is done after a core reset.  In addition, the timeout for link
      presence detection is increased from 500ms to 8 seconds.

Version 2.8.1 May 31, 2006
----------------------------
   Fixes:
   ======
   1. Problem : LED blinking function in MBA configuration doesn't blink 
      all LEDs. (CQ#23754)

      Change : Changed blinking LED logic to blink all LEDs using both 
      S/W overwrite and H/W blinking logic.

Version 2.8.0 April 14, 2006
-------------------------------
   Fixes:
   ======
   1. Problem : Fixed a problem where Blink LED function doesn't work 
      on some OEM NICs.  (CQ#23754)

      Cause : On some NIC designs, activity LED will not blink unless 
      speed LED is forced ON.

      Change : Changed blinking LED logic to force all speed LEDS on.

   Enhancements:
   =============
   1. Enhanced DHCP logic in the base code so that it will only 
      wait for up to 4 seconds to send out DHCP requests after one
      or more DHCP offers are received.
   2. Enhanced to pass VLAN information to iSCSI boot agent.

Version 2.6.7 January 26, 2006
-------------------------------
   Fixes:
   ======
   1. Problem : Users cannot invoke iSCSI configuration program via "F7"
      on some systems.

      Cause : Some BIOS's don't return "F7" keystroke via INT16h services.

      Change : Changed MBA configuration menu to use "Ctrl-I" to invoke 
      iSCSI configuration program.

   Enhancements:
   =============
   1. Enhanced MBA configuration menu so that it will load iSCSI 
      configuration program to 5000:0 if system doesn't support 
      PMM (Post Memory Manager).

Version 2.6.6 January 25, 2006
------------------------------
   Fixes:
   ======
    1. Problem : MBA configuration menu initializes VLAN field to zero when 
       one or more other parameters are changed.
       
       Cause : VLAN field is checked for valid range before it's masked out.

       Change : VLAN field is masked out before doing a valid range check.

Version 2.6.5 January 18, 2006
------------------------------
   Enhancements:
   ============
   1. Enhanced MBA configuration menu to load iSCSI configuration program 
      if it's available in the NVRAM.

Version 2.6.4 January 17, 2006
------------------------------
   Fixes:
   ======
    1. Problem : PXE doesn't behave correctly if the content of NVRAM is 
       not valid. This might cause system to hang. (CQ#22797)
 
       Cause : When NVRAM is invalid, bootcode doesn't run to completion. 
       Therefore, PXE extracts bad information from the device.

       Change : Changed PXE init code to check if the bootcode runs to 
       completion or not.  If not, it just discards Option ROM.

Version 2.6.3 January 16, 2006
------------------------------
   Enhancements:
   ============
   1. Updated Copyright banner to reflect year of 2006. 

   2. Added interface to pass iSCSI block parameters from NVRAM to iSCSI
      boot initiator.

   3. Removed "Boot to iSCSI Target" from MBA configuration menu is this 
      option can now be configured with iSCSI configuration utility.

Version 2.6.2 December 9, 2005
------------------------------
   Enhancements:
   ============
   1. Added workaround for ISR acknowledging procedure.  Two writes to Interrupt
      Acknowledge register are used.

Version 2.6.1 December 7, 2005
------------------------------
   Fixes:
   ======
    1. Problem : Test LED function in MBA configuration menu (Ctrl-F6) doesn't work
       after first time. (CQ#21998)
 
       Cause :  Stack parameters were not saved correctly.

       Change : Changed blinking LED routine to push stack parameters correctly.

Version 2.6.0 December 1, 2005
------------------------------
   Enhancements:
   ============
   1. Improve BER for BCM5708S B1.

      Cause: The peak-to-peak amplitude of Tx signal is as low as 765mV.

      Change: Changed UNDI driver to program the Serdes transmitter to 
      drive output signal level to as high as 962mV.

Version 2.5.14 December 1,2005
-------------------------------
   Fixes:
   ======
    1. Problem : Test LED function in MBA configuration menu (Ctrl-F6) doesn't work
       with BCM5708.
 
       Cause :  LED mode register was not programmed to MAC mode correctly.

       Change : Changed LED blinking function to program LED mode to MAC mode.

Version 2.5.13 November 10,2005
-------------------------------
   Fixes:
   ======
    1. Problem : PXE doesn't work well in some environments where the device
       shares interrupt with storage controller.

       Cause :  UNDI driver uses content of status block to determine if the
       NIC is the source of interrupt. 

       Change : Changed UNDI ISR to query device's interrupt register to 
       determine the source of interrupt.

Version 2.5.12 September 23,2005
--------------------------------

   Enhancements:
   ============
   1. Removed BCM5706 A0 support.

Version 2.5.11 September 21,2005
-------------------------------

   Enhancements:
   ============
   1. Enhanced to shink the memory foot-print and image size by about 5K.

Version 2.5.10 September 20,2005
-------------------------------

   Enhancements:
   ============
   1. Configured SERDES parameters (Pre-emphasis,etc...) on BCM5708 Serdes PHY 
      based on configured paramters stored in the NVRAM.

Version 2.5.9 September 12,2005
-------------------------------
   Fixes:
   ======
    1. IPMI connection fails at PXE image selection screen. (CQ#13844)

       Cause :  It's a known limitation in the previous version of RV2P
       firmware where management traffic will stall if there is no 
       Rx buffer available.

       Change : Integrated enhanced version of RV2P firmware where 
       management traffic will not stall if there is no Rx buffer 
       available.

Version 2.5.8 September 8,2005
------------------------------
   Fixes:
   ======
    1. Problem : PXE failed to load on some NVRAM type on BCM5708.

       Cause :  It's a known marginal timing problem in BCM5708 NVRAM 
       interface where software cannot access NVRAM reliably.

       Change : Changed the PXE init code to initialize NVRAM interface
       so that the speed of the flash interface is lowered from 16MHz/25MHz
       to 10MHz.

   Enhancements:
   ============
   1. Enhanced MBA configuration to allow users to configure an option
      so that iSCSI boot client can attach to iSCSI target but not boot
      from it.

Version 2.5.7 September 1,2005
------------------------------
   Fixes:
   ======
    1. Problem : Monolithic iSCSI boot hangs after connecting to iSCSI target.
       (TO#1577)

       Cause :  iSCSI initiator and UNDI driver are loaded to conventional 
       memory during POST.  Some BIOSes don't use 40:13 to manage conventional 
       memory. BIOS corrupts iSCSI initiator and UNDI driver code/data during 
       POST.

       Impact : This fix also requires iSCSI Boot ROM  v1.1.2 or newer.

       Change : Changed iSCSI boot implementation to indicate to the BIOS 
       that MBA is a BEV (Boot Entry Vector) device.  MBA only loads 
       iSCSI boot initiator and UNDI driver to the conventional memory
       after POST, when BEV is called, just like PXE booot.

Version 2.5.6 August 30, 2005
----------------------------
   Fixes:
   ======
   1. Problem: LOM UMP channel not responding when PXE boot is terminated
      by users. (TO#1667)

      Cause: PXE doesn't issue a device reset when PXE boot is terminated
      with <ESC> key.

      Change: Changed PXE exit code to issue a device reset.

   2. Problem: DOS UNDI might hang in some specific systems/environments
      where it doesn't handle spurious interrupts. (CQ#13762)
      
      Cause: When optimization code path is taken, there is a bug in the
      UNDI driver in which it might not claim it's the source of interrupt. 
      It indicates to upper layer driver (e.g Universal NDIS2 driver) that 
      it's not the source of interrupt.  In some systems, however, the last 
      default handler (BIOS or O/S) of the interrupt handler chain doesn't 
      send EOI (End-Of-Interrupt) to the PIC (Programmable Interrupt 
      Controller).  This prevents the driver not getting any more 
      interrupts even the device still generates interrupt.

      Change: Implement logic so that it always claims its interrupt 
      when optimization path is taken.

   Enhancements:
   ============
   1. Enhanced UNDI interface so that upper layer can query iSCSI MAC
      address.

   2. Change: Added reporting of link speed to firmware.

Version 2.5.5 August 4, 2005
----------------------------

   Enhancements:
   ============
   1. Added support for iSCSI as one of the boot protocol.  iSCSI option 
      is only available if ISCSI image is found in the NVRAM.

Version 2.5.4 July 26, 2005
---------------------------

   Enhancements:
   ============
   1. Added support for default link speed for Serdes link.  Specifically, 
      users can configure a NVRAM parameter so that link will be configured
      as forced 1Gps or forced 2.5Gbps for backplane application.  This 
      option only applies to BCM5706S and BCM5708S.

   2. Added support so that Shared Memory Block can be anywhere on the 
      Management Processor memory instead of a fixed location.

Version 2.5.3 July 18, 2005
--------------------------
   Fixes:
   ======
   1. Problem: PXE failed to load on BCM5708 B0 NIC. (TO#1516)

      Cause: The default value of Config1 register changed in BCM5708 B0
      which causes PXE init to misdetect flash configuration.

      Change: Fixed an issue in the NVRAM init code to properly detect
      flash configuration using new strap control bits in BCM5708 B0.

   Enhancements:
   ============
   1. Added support for ATMEL 2MBIT buffered Flash.

Version 2.5.2 July 13, 2005
--------------------------
   Fixes:
   =====
   1. Problem: PXE and IPMI/UMP don't work correctly when IPMI/UMP is 
      enabled. (TO#1513)

      Cause: There are two problems.  RXP firmware doesn't forward IPMI
      packets to MCP processor.  Sequence number is not incremented when
      DRV_PULSE_MAILBOX is written to the shared memory.  This causes 
      bootcode to think it's OS absence mode.  

      Change: Changed UNDI driver to increment DRV_PULSE_MAILBOX 
      sequence number when DRV_PULSE_MAILBOX is written to shared
      memory and updated firmware to route IPMI packets to 
      MCP processor.

Version 2.5.1 July 11, 2005
-------------------------
   Enhancements:
   ============
   1. Improve BER for BCM5708s. (TO#1486)

      Cause: The peak-to-peak amplitude of Tx signal is as low as 765mV.

      Change: Changed UNDI driver to program the Serdes transmitter to 
      drive output signal level to as high as 962mV.

Version 2.5.0 May 27, 2005
--------------------------

   Fixes:
   ======
   1. Problem: PXE driver doesn't detect link when link partner's 
      autonegotiation is disabled.  This problem only occurs with 
      BCM5706s.
      
      Cause: Fallback mechanism doesn't work correctly.

      Change: Changed UNDI driver to handle fallback mechanism correctly.

   2. Problem: PXE processes DHCP Vendor Specific option (option 43) when 
      Class Identifier (DHCP option 60) is not present or doesn't contain
      "PXEClient".

      Change: Changed the DHCP logic in the base code so that it only 
      processes Vendor Specific option when Class Identifier is present 
      and contains "PXEClient".

   3. Problem: TFTP download fails if TFTP responses are in multiple
      IP fragments. 
    
      Cause: Base code doesn't support TFTP read when TFTP responses are 
      in multiple IP fragments. 

      Change: Added logic to handle IP reassembly when TFTP responses are 
      in multiple IP fragments and set IP reassembly timeout to 1 second.

   Enhancements:
   ============
   1. Added 2.5Gbps support for BCM5708s.

   2. Enhance ROM header utility (romhdr.exe) to display detailed descriptions
      of a given image. Version of this utility is v1.6.
       For instance,

              romhdr -verbose -i bxundi.nic 


      The output is :

                 Content of PCI Data Structure in ROM Image
                 ===========================================
                 Vendor ID          : 0x14e4
                 Device ID          : 0x164a
                 Code/Data Revision : 0x2500

                 Content of Vendor Data Structure in ROM Image
                 =============================================
                 Flags            : 0x4000 ( NIC )
                 UNDI Code Size   : 18308
                 UNDI Data Size   : 23392
                 BC Code Size     : 0
                 BC Data Side     : 0
                 Version          : v2.5.0

       This indicates that this UNDI driver is for NIC device. The 
       run-time memory footprint of this UNDI driver is about 41K.

Version 2.2.1 January 26, 2005
-------------------------------

   Fixes:
   ======
   1. Problem: PXE driver doesn't work on PCI-X 133MHZ of some systems.
      (CQ#942).
      
      Cause: On some PCI-X systems, BCM5706 doesn't report PCI-X speed
      correctly on Miscellanoues status register (0x6c).  This causes PXE
      driver to not enable delayed completion bit in the DMA status block.

      Change: Changed UNDI driver to query PCI-X clock speed from PCI 
      Clock Control register.

Version 2.2.0 January 19, 2005
-------------------------------

   Enhancements:
   ============
   1. Added support for BCM5708 family devices (0x14e4/0x164c, 
      0x14e4/0x16ac).

Version 2.0.0 January 18, 2005
-------------------------------

   Enhancements:
   ============
   1. Removed support for BCM5708 family devices (0x14e4/0x164c, 
      0x14e4/0x16ac).

   2. Updated Copyright banner to reflect year of 2005. 

   Fixes:
   ======
   1. Problem: PXE driver doesn't work on PCI-X 133MHZ slot.
      
      Cause: There is a problem in the chip.  However, this can 
      be worked around  by enabling delayed completion in DMA block.

      Change: Changed UNDI driver to enable delayed completion in DMA 
      configuration register.

   2. Problem: PXE failed to detect link drop on fiber link when cable
      is removed.
    
      Cause : There is bug in the chip where Rx line is coupled with 
      Tx line which causes the PHY to misdetect the link status.
  
      Change: Changed UNDI driver to poll the MAC status and configure
      the MAC block to qualify link status from the PHY with signal 
      detect.

Version 1.2.1 December 30, 2004
-------------------------------

   Fixes:
   ======
   1. Problem: UDP_WRITE API service sends out oversized packets during
      IP fragmentation process if the datagram is larger than 1500.
      (CQ#11775)
      
      Cause: UNDI driver incorrectly returns MTU field as 1514 instead of 
      1500 in GET_ADAPTER_INFORMATION API.

      Change: Changed UNDI driver to correcly return correct value for 
      MTU field in GET_ADAPTER_INFORMATION API.

Version 1.2.0 December 13, 2004
-------------------------------
   Enhancements:
   ============
   1. Request: Add support for BCM5708 family devices (0x14e4/0x164c, 
      0x14e4/0x16ac).

      Change: Changed firmware to use 12K (instead of 16K) scratchpad 
      memory for Tx patch-up processor.

Version 1.1.7 November 9, 2004
-------------------------------
   Enhancements:
   ============
   1. Added support back for BCM5706 A1 in PCI slots.

   2. Minimized usage of UMB memory space. Changed PXE initialization code to 
      initialize ROM size to 512-byte alignment instead of 2K-alignment when 
      discarding unused init code.  In addition, NVRAM driver code is 
      reorganized so that programming and initializing code are discarded 
      after ROM initialization is done.  Usage of UMB is reduced from 8K to 
      5.5K per NIC.
 
   2. Enhanced to return specific UNDI API error codes when API call fails.

Version 1.1.6 November 9, 2004
-------------------------------
   Enhancements:
   ============
   1. Removed support for BCM5706 A1 in PCI slots.

Version 1.1.5 November 3, 2004
-------------------------------
   Enhancements:
   -------------
   1. Added support for SAIFUN flash parts. (TO#676)

Version 1.1.4 October 18, 2004
-------------------------------
   Enhancements:
   ============
   1. Changed to display banner as "Broadcom NetXtreme II.....".

   Fixes:
   ------
   1. Problem:  PXE doesn't display PFN (PCI Function Number) correctly 
      when PCI bus number contains HEX number. (TO#641)
  
      Change : Fixed converting routine to handle HEX numbers correctly.

Version 1.1.3 September 22, 2004
-------------------------------

   Fixes:
   =====
   1. Problem: Some systems detects PCI parity or system error during a 
      PXE boot if the BCM5706 A1 device is on a 64-bit PCI slot.

      Cause: There is a bug in BCM5706 A1 silicon where it can falsely 
      detect parity error and then generate PERR when the device runs on 
      a PCI 64-bit slot.

      Change: Changed UNDI driver to disable SERR/PERR generation from 
      the BCM5706 if it's detected to be running on a PCI slot.

Version 1.1.2 September 7, 2004
-------------------------------

   Fixes:
   =====
   1. Problem: Some systems might prompt for "F1 to continue" when PXE is 
      enabled. (TO526)

      Cause : PXE init code corrupts content of register BP.

      Change: Changed PXE init code to preserve content of register BP in
      integer to string converting routine.

Version 1.1.1 September 1, 2004
-------------------------------

   Fixes:
   ======
   1. Problem: PXE might not work well in some systems with BCM5706 A1.
  
      Change : Added the following software workarounds for BCM5706 A1:
                 * Wait 30ms after device reset so that bootcode can program 
                   workarounds before driver accesses any device registers.
                 * Enable ONE DMA feature on the TX DMA block.

Version 1.1.0 August 10, 2004
-----------------------------

   Enhancements:
   -------------
   1. Enhanced UNDI driver to support EXTENDED INITIALIZE API.  This allows 
      ISCSI boot software to initialize the device with ISCSI parameter.

Version 1.0.10 June 24, 2004
----------------------------

   Fixes:
   ------
   1.  Problem: 
         UNDI driver cannot detect link when boocode version 0.34 or newer
         is used.

       Cause:
         UNDI driver doesn't synchronize with bootcode properly. 

       Change:
         Changed UNDI code to synchronize with bootcode properly.

   Enhancements:
   -------------
   1. Enhanced UNDI driver to eliminate link drop during initialization if 
      there is no link change request.


Version 1.0.9 May 5, 2004
-------------------------

   Fixes:
   ------
   1.  Problem: 
         UNDI driver might drop packet if a burst of 5 or more packets coming 
         in a burst.

       Cause:
         UNDI driver only allocates 4 Rx buffers and RV2P firmare drops 
         incoming packets when host buffer is not available.

       Change:
         RV2P firmware is changed so that it will not drop incoming packets 
         when host buffer is not available.  This allows incoming packets 
         to be buffered on the chip memory.  This effectively increases the
         number of Rx buffers.

   2. Problem : TFTP download fails if TFTP server doesn't response to 
      the first TFTP ACK. (CQ#9924)

      Cause : This is a bug in the base code. Whenever the TFTP server 
      doesn't response the first TFTP ack, the TFTP open code intends to 
      send TFTP Read Request again with different UDP source port number 
      (incremented by 1).  There is a bug in the code where it doesn't 
      reinitialize the packet as TFTP Read Request packet.  Therefore, it 
      sends out the packet as TFTP ACK packet since the last packet being 
      sent was a TFTP ACK.

      Change : Changed TFTP open routine to reinitialize the packet as TFTP
      Read Request whenever a read request is transmitted. 

   Enhancements:
   ------------
   1. Change Base code banner to have Broadcom copyright and use standard
      version number.

Version 1.0.8 April 19, 2004
----------------------------

   Enhancements:
   -------------

   1. Request:
          Add Ethernet@WireSpeed support for copper interface.

       Change:
          Changed UNDI driver to enable Ethernet@WireSpeed feature on the 
       PHY.

   2. Enhance UNDI driver to have better a Bit Error Rate (BER) 
      performance.

      Change : Changed UNDI driver to initialize the PHY core in 
      order to adjust the bias current for the ADC but not the 
      hybrid or DPLL.

Version 1.0.7 April 12, 2004
----------------------------

   Enhancements:
   -------------

   1.  Request:
          Add BCM5706S-based NIC/LOM (fiber interface) support.

       Change:
          Changed UNDI driver to support Serdes.

Version 1.0.6 April 6, 2004
---------------------------
   Fixes:
   ------
   1.  Problem: 
         Blink LEDs in MBA configuration doesn't work when LED mode is 
         configured to non-MAC mode.

       Cause:
         LED control via software only works when the device is in 
         MAC mode.  

       Change:
         Changed the MBA code to configure LED mode to MAC mode before 
         toggling the LEDs.

   Enhancements:
   -------------

   1.  Request:
          Allow users to configure VLAN ID field in MBA configuration 
          menu.

       Change:
          Changed MBA configuration code to allow users to configure
          VLAN ID field.

Version 1.0.5 April 1, 2004
---------------------------
   Fixes:
   ------
   1.  Problem: 
         Base code fails to boot on Compaq DL360 and displays the following 
         error messages: 
             PXE-E20: Invalid Message Code
             PXE-MOF: Exiting Broadcom PXE ROM. (TO#194)

       Cause:
         TFTP API service call in the base code invokes BIOS system call, 
         INT 15h AH=87h, to copy a block of memory from the conventional 
         memory to the extended memory. This call always fails on the 
         first time but succeeds on the second time. 

       Change:
         Changed the base code to invoke the BIOS system call 2nd time if 
         it fails the first time before failing the API call.

   2.  Problem: 
         Flow control capability is not advertised to the link partner.

       Change:
         Fixed the phy setup routine to advertise flow control capability.

Version 1.0.4 March 31, 2004
----------------------------
   Fixes:
   ------
   1.  Problem: 
           System detects PCI parity error during PXE boot on a certain
       platforms. (TO#165)


       Cause:
         There is a bug in BCM5706 A0 silicon where it can falsely 
       detect parity error and generates SERR and PERR.

       Change:
         Changed UNDI driver to disable SERR and PERR generation from 
       the device.

Version 1.0.3 March 30, 2004
----------------------------
   Fixes:
   ------
   1.  Problem: 
           ReadRite (RR) test intermitently fails when multiple clients run
       the same test concurrently. This problem should not happen
       with bootcode v0.30. (TO#165)

       Cause:
         There is a bug in boot code v0.31 where it doesn't put valid 
       manufacturing information in the shared memory over 400ms after
       device reset.  It is much greater than current timeout (30ms) in
       the UNDI driver. It causes UNDI driver to use default MAC 
       address which in turn results in MAC address duplication on the 
       network.
   
       Change:
         Changed UNDI driver to have a greater timeout so that it can
       workaround this issue and also handle slow serial EEPROM.

Version 1.0.2 March 29, 2004
----------------------------
   Fixes:
   ------
   1.  Problem:
        XDIAG doesn't display MBA version correctly.
    
       Cause:
        Build version field is zero in ROM version number.

       Change:
        Corrected the build version field in the ROM header.

   Enhancements:
   -------------

   1.  Request:
          Add VLAN support.

       Change:
          Changed UNDI driver to be able to transmit packets with VLAN tag and 
          receive packets with VLAN information.  MBA configuration (Ctrl-S) is 
          also modified to allow users to enable VLAN feature and to view 
          current VLAN ID.  Users have to use XDIAG to configure VLAN ID. 
          Future version of MBA will allow users to configure VLAN ID in 
          MBA configuration menu.

Version 1.0.1 March 24, 2004
----------------------------
   Fixes:
   ------
   1.  Problem:
          Parity error occurs while booting without link. (TO#159)

       Cause:
          After issuing a device core reset, UNDI driver doesn't wait long 
          enough before accessing device registesr.  There is a bug in the 
          BCM5706 A0 that PCI PLL has to be disabled.  After a device reset,
          boot code takes time to get executed and to program the device to
          disable PCI PLL.

       Change:
         Changed the routine that shutdowns the device use common reset 
         routine which waits long enough after a device is reset.

   Enhancements:
   -------------

   1.  Request:
          Mimimize driver memory footprint.

       Change:
          Eliminated unused code and recoded some routines to use minumum 
          memory.  MBA image is now 2.5K smaller compared previous version.

Version 1.0.0 March 22, 2004
----------------------------

   Initial release.


Revision History of Base Code 
=============================
Intel developed base code and distributed it as a part of PXE SDK 
to the NIC hardware vendors who develop UNDI drivers for their 
NIC products.  During testing and development process, Broadcom has 
found various bugs and has provided appropriate fixes.  Details of
various fixes are listed as follows:

v1.1.1: 
       Fixed an issue in the TFTP open routine where timeout is not
       reset per call.  This causes a tremenous delay if TFTP server
       is not available. (CQ#39447)

v1.0.7: 
      Enhanced the bootstrap menu processing logic in the base code to
      poll UNDI interface for Rx packets so that IPMI/ASF traffic is 
      not blocked. 

v1.0.6: 
      During BINL (Boot Information Negotiation Layer) phase, base code 
      checks to make sure Server IP address in the BINL response is the 
      same as the Server IP address in DHCP phase.  If it's different, 
      then it doesn't accept the BINL response.  This can be different 
      and valid in some configurations. Changed the base code so that 
      it doesn't have to validate the Server IP address in BINL phase.

v1.0.5:
      Changed the DHCP logic in the base code so that it will only 
      wait for up to 4 seconds to send out DHCP requests after one
      or more DHCP offers are received.

v1.0.4:
      Changed the DHCP logic in the base code so that it will process
      Vendor Specific option regardless where Class Identifier in the 
      DHCP packet.

v1.0.3: 
      Added logic to handle IP reassembly when TFTP responses are 
      in multiple IP fragments and set IP reassembly timeout to 1 second.

v1.0.2:
      Changed the DHCP logic in the base code so that it only 
      processes Vendor Specific option when Class Identifier is present 
      and contains "PXEClient".

v1.0.1:
      Changed to abort network boot if UNDI driver return status code
      of PXENV_STATUS_UNDI_MEDIATEST_FAILED.

v1.0.0: 
    1. Changed to add Broadcom copyright.
    2. Changed revision number to standard version number format.
    3. Whenever the TFTP server doesn't response the first TFTP ack,
       the TFTP open code intends to send TFTP Read Request again 
       with different UDP source port number (incremented by 1).  
       There is a bug in the code where it doesn't reinitialize the 
       packet as TFTP Read Request packet.  Therefore, it sends out 
       the packet as TFTP ACK packet since the last packet being 
       sent was a TFTP ACK.
